import axios from "axios";
import {
  ElMessage
} from "element-plus";
import {
  isLoginStore
} from "../store/IsLoginStore";
const api = axios.create({
  // baseURL: "http://127.0.0.1:9090/",
  timeout: 10000,
});

// 请求拦截器
api.interceptors.request.use(
  (config) => {
    config.headers["Access-Control-Allow-Origin"] = "*";
    // 在请求发送之前可以做一些处理，如添加token等
    let token = localStorage.getItem("Authorization");
    config.headers["Authorization"] = token;
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器
api.interceptors.response.use(
  (res) => {
    if ("/api/api/chat/start" == res.config.url) {
      return res;
    }
    const status = Number(res.status) || 200;
    const message = res.data.msg || "后台服务走丢了,请稍后重试...";
    const isLogin = isLoginStore();
    // 如果服务器响应非200否者默认统一处理
    if (status !== 200 || res.data.code != 200) {
      //统计放行
      if ("/api/api/chat/tokens/statistics/all" == res.config.url) {
        return Promise.reject(new Error(message));
      }
      //需要登录的接口 判断是否登录过期
      if (res.data.code === 10000) {
        localStorage.removeItem("Authorization");
        localStorage.removeItem("userData");
        isLogin.setIsLoginBox(true);
        isLogin.setIsLoginFlag(false);
        return;
      }
      if (res.data.code === 10001 && message == "账号其他地方登录") {
        localStorage.removeItem("userData");
        localStorage.removeItem("Authorization");
        isLogin.setIsLoginBox(true);
        isLogin.setIsLoginFlag(false);
      }
      ElMessage.error(message);
      return Promise.reject(new Error(message));
    }
    //token刷新
    if (
      res.headers.authorization !== undefined &&
      res.headers.authorization !== null
    ) {
      const token = res.headers.authorization;
      localStorage.setItem("Authorization", token);
    }
    // 对响应数据进行处理
    return res.data;
  },
  (error) => {
    // 对响应错误进行处理
    return Promise.reject(error);
  }
);

export default api;